package com.admin.config;
import com.admin.util.LogUtil;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.util.Map;

/**
 * 基础控制器
 * 其他控制器继承此控制器获得日期字段类型转换和防止XSS攻击的功能
 */
public class BaseController {
    Logger log = LogUtil.getBussinessLogger();
    @Autowired
    private StringRedisTemplate userRedisTemplate;
    /**
     * 把json转换为Map
     * @author gongchengbing
     * @date 2018年9月18日
     * @version 1.0
     * @return
     */
    @SuppressWarnings("unchecked")
    public Map<String, Object> jsonToMap(String str){
        log.info("==============================接口开始==========================================");
        if(str!=null) {
            Map<String, Object> jsonObject =(Map<String, Object>) JSON.parse(str);
            return jsonObject;
        }
        return null;
    }
    public String toJson(Object resultM) {
        String resultS = JSON.toJSONString(resultM);
        log.info("返回的数据：=============================="+resultS);
        log.info("==============================接口结束==========================================");
        return resultS;
    }
    public String mapToGson(Map<String, Object> resultM) {
        Gson g = new Gson();
        String resultS = g.toJson(resultM);
        log.info("返回的数据：=============================="+resultS);
        log.info("==============================接口结束==========================================");
        return resultS;
    }

    public <T> T jsonToT(String obj,Class<T> clazz){
        if(obj!=null) {
            T jsonObject = JSON.parseObject(obj, clazz);
            return jsonObject;
        }
        return null;
    }
   /* public UserDTO tokenVerify(){
        HttpServletRequest request = ContextHolderUtils.getRequest();
        String accessToken = request.getHeader(Const.USER_ACCESS_TOKEN);
        if (!StringUtils.isEmpty(accessToken)) {
            String userJson = userRedisTemplate.opsForValue().get(Const.USER_REDIS_PREFIX + accessToken);
            if (!StringUtils.isEmpty(userJson)) {
                UserDTO userDTO = JSONObject.parseObject(userJson, UserDTO.class);
                SessionUtil.setUser(userDTO);
                userRedisTemplate.expire(Const.USER_REDIS_PREFIX + accessToken, 2, TimeUnit.DAYS);
                return userDTO;
            }
        }
        return null;
    };*/

}
